/**
 *
 */
package com.fitbet.webpay.handler;

import com.demo2do.core.wechat.entity.pay.PayTransaction;
import com.fitbet.webpay.entity.PaymentContext;
import com.fitbet.webpay.entity.callback.CallbackRequest;
import com.fitbet.webpay.entity.callback.CallbackResponse;
import com.fitbet.webpay.entity.prepare.PrepareRequest;
import com.fitbet.webpay.entity.prepare.PrepareResponse;

/**
 * @author downpour
 *
 */
public interface PaymentFacade {
    
    /**
     * 
     * @param prepareRequest
     * @return
     */
    public PrepareResponse prepare(PrepareRequest prepareRequest);
    
    /**
     * 
     * @param paymentContext
     * @param callbackRequest
     */
    public void validate(PaymentContext paymentContext, CallbackRequest callbackRequest);
    
    /**
     * 
     * @param paymentContext
     * @param payTransaction
     * @return
     */
	public CallbackResponse paid(PaymentContext paymentContext, PayTransaction payTransaction);

}
